package com.ruoyi.erp.transport.service.impl;

import com.ruoyi.erp.transport.mapper.IsoUnitMapper;
import com.ruoyi.erp.transport.domian.IsoUnit;
import com.ruoyi.erp.transport.service.IsoUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class IsoUnitServiceImpl implements IsoUnitService {
    @Autowired
    IsoUnitMapper isoUnitMapper;

    @Override
    public List<IsoUnit> selectIsoUnitAll(String unitType) {
        init();
        List<IsoUnit>  isoUnits = isoUnitMapper.selectIsoUnitAll(unitType);
        if("Weight".equals(unitType)){
            isoUnits.stream().forEach(x -> x.setPresentFactor(weightmap.get(x.getUnitCode())));
        }else{
            isoUnits.stream().forEach(x -> x.setPresentFactor(volumemap.get(x.getUnitCode())));
        }
        return isoUnits;
    }

    static Map<String,String> weightmap = new HashMap<>();
    static Map<String,String> volumemap = new HashMap<>();
    static void  init(){
        //-------------体积--------------
        //厘升
        volumemap.put("cl","1*10^-5");
        //立方厘米
        volumemap.put("cm3","1*10^-6");
        //立方分米
        volumemap.put("dm3","1*10^-3");
        //品脱（美制干量）
        volumemap.put("dry pt","5.506105*10^-4");
        //夸脱（美制干量）
        volumemap.put("dry qt","1.101221*10^-3");
        //液量盎司
        volumemap.put("fl oz","2.957353*10^-5");
        //立方英尺
        volumemap.put("ft3","2.83168466*10^-2");
        //加仑 (US)
        volumemap.put("gal","3.785412*10^-3");
        //一百公升
        volumemap.put("hl","0.1");
        //立方英寸
        volumemap.put("in3","1.6387064*10^-5");
        //上一级
        volumemap.put("l","1*10^-3");
        //品脱（美制液量）
        volumemap.put("liq pt","4.731765*10^-4");
        //夸脱（美制液量）
        volumemap.put("liq qt","9.463529*10^-4");
        //立方米
        volumemap.put("m3","1");
        //毫升
        volumemap.put("ml","1*10^-6");
        //立方毫米
        volumemap.put("mm3","1*10^-9");
        //立方码
        volumemap.put("yd3","0.76455486");

        //-------------重量--------------
        //百万加仑
        weightmap.put("Mg","1*10^3");
        //十克
        weightmap.put("dag","1*10^-2");
        //克
        weightmap.put("g","1*10^-3");
        //一百公克
        weightmap.put("hg","0.1");
        //千克
        weightmap.put("kg","1");
        //磅（重量）
        weightmap.put("lb","0.45359237");
        //毫克
        weightmap.put("mg","1*10^-6");
        //盎司（重量）
        weightmap.put("oz","2.83495231*10^-2");
        //公吨
        weightmap.put("t","1*10^3");
        //统一原子质量单位
        weightmap.put("u","1.66054*10^-27");
        //微克
        weightmap.put("ug","1*10^-9");
    }


}
